--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
meshchatx/src/backend/plugin_integrity.py e5756d7ab065475a18acdcafc008a767fcff87e0 (e5756d7a) Text, 748 B
T8b949e# SPDX-License-Identifier: 0BSD
Tff7b72from T7ee787__future__ Tff7b72import Te6edf3annotations
Tff7b72import T7ee787hashlib
Tff7b72from T7ee787meshchatxT7ee787.T7ee787srcT7ee787.T7ee787backendT7ee787.T7ee787plugin_signature Tff7b72import Te6edf3canonical_dir_payload
Te6edf3INTEGRITY_TAMPER_MESSAGE Tff7b72= Ta5d6ff"Ta5d6ffplugin files were modified outside MeshChatXTa5d6ff"
Tff7b72def Td2a8ffcompute_dir_integrity_hashTb4b4b4(Te6edf3dir_pathTb4b4b4: Tffa657strTb4b4b4) Tff7b72-Tff7b72> Tffa657strTb4b4b4:
Te6edf3payload Tff7b72= Te6edf3canonical_dir_payloadTb4b4b4(Te6edf3dir_pathTb4b4b4)
Tff7b72return Te6edf3hashlibTff7b72.Td2a8ffsha256Tb4b4b4(Te6edf3payloadTb4b4b4)Tff7b72.Td2a8ffhexdigestTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ffverify_dir_integrityTb4b4b4(Te6edf3dir_pathTb4b4b4: Tffa657strTb4b4b4, Te6edf3expected_hashTb4b4b4: Tffa657strTb4b4b4) Tff7b72-Tff7b72> Tffa657tupleTb4b4b4[Tffa657boolTb4b4b4, Tffa657strTb4b4b4]Tb4b4b4:
Tff7b72if Tff7b72not Te6edf3expected_hashTb4b4b4:
Tff7b72return Tff7b72TrueTb4b4b4, Ta5d6ff"Ta5d6ff"
Te6edf3current Tff7b72= Te6edf3compute_dir_integrity_hashTb4b4b4(Te6edf3dir_pathTb4b4b4)
Tff7b72if Te6edf3current Tff7b72!= Te6edf3expected_hashTb4b4b4:
Tff7b72return Tff7b72FalseTb4b4b4, Te6edf3current
Tff7b72return Tff7b72TrueTb4b4b4, Te6edf3current
Tff7b72def Td2a8ffintegrity_tamper_errorTb4b4b4(Tb4b4b4) Tff7b72-Tff7b72> Tf85149ValueErrorTb4b4b4:
Tff7b72return Tf85149ValueErrorTb4b4b4(Te6edf3INTEGRITY_TAMPER_MESSAGETb4b4b4)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────